<?php
/**
 * @package pagina
 * @author Alvaro Garcia
 * @license GPL3
 */

class Calendario
{

	private $idUsuario;
	
	function Calendario($idUsuario)
	{
		if(is_object($idUsuario))
			$this->idUsuario = $idUsuario->getId();
		else
			$this->idUsuario = $idUsuario;
	}
	
	public function nuevoEvento($fecha,$diaCompleto,$nota)
	{
		if($diaCompleto == true)
			$diaCompleto = 1;
		else
			$diaCompleto ="null";
			
		$sql = "INSERT INTO calendario (id_usuario,nota,fecha,dia_completo)
				VALUES
				(".$this->idUsuario.",'".$nota."','".$fecha."',".$diaCompleto.")";
		if(mysql_query($sql))
			return mysql_insert_id();
		else
			return false;
	}
	
	public function getCumples($desde,$hasta)
	{
			$desde=split("-",$_GET['desde']);
			$hasta=split("-",$_GET['hasta']);
	
		////////********HACER QUE TAMBIEN COJA LOS DIAS para optimizar *********/////////
		if($desde[1] < $hasta[1])//Se hace esto para que al coger los meses de diciembre y enero no falle
		{
			$sql="SELECT a.id_amigo as id_amigo,nombre,apellido1,apellido2,extract(YEAR FROM cumple) as ano,extract(MONTH FROM cumple) as mes,extract(DAY FROM cumple) as dia 
				from amigos a
				JOIN usuarios u on (a.id_amigo=u.id_usuario)
				WHERE a.id_usuario = ".$this->idUsuario."
				AND extract(MONTH FROM cumple) >= ".$desde[1]."
				AND extract(MONTH FROM cumple) <= ".$hasta[1];
		}else{//Quiere decir que hay cambio de año (se pide de 2009-11-5 hasta 2010-1-5 por ejemplo), se cambia el and por el or
			$sql="SELECT a.id_amigo as id_amigo,nombre,apellido1,apellido2,extract(YEAR FROM cumple) as ano,extract(MONTH FROM cumple) as mes,extract(DAY FROM cumple) as dia 
				from amigos a
				JOIN usuarios u on (a.id_amigo=u.id_usuario)
				WHERE a.id_usuario = ".$this->idUsuario."
				AND( extract(MONTH FROM cumple) >= ".$desde[1]."
				or extract(MONTH FROM cumple) <= ".$hasta[1].")";
		}
		$res = mysql_query($sql);
		$lista = array();
		while($cumpleMy = mysql_fetch_array($res))
		{
			if($cumpleMy['mes']>0)
			{
			    $cumple['url'] = "#perfil&uuid=".$cumpleMy['id_amigo'];
	            $cumple['nota'] = $cumpleMy['nombre']." ".$cumpleMy['apellido1']." ".$cumpleMy['apellido2'];
	            //Para arreglar cuando hay cambio de año
	            if($cumpleMy['mes']<$desde[1])
	            	$anoActual = $hasta[0];
	            else
	            	$anoActual = $desde[0];
	
	            $cumple['fecha'] = $anoActual."-".$cumpleMy['mes']."-".$cumpleMy['dia']." 00:00:00";
	            $cumple['dia_completo'] = true;
	            $cumple['tipo']="cumple";
	            $cumple['ano']=$cumpleMy['ano'];
	            $lista[]=$cumple;
			}
			
		}
		return $lista;
	}
	public function getEventosProximos($dentroDe)
	{
		$sql="SELECT id_tarea,id_usuario,nota,fecha,fecha_fin,dia_completo, datediff(fecha,now()) as dentroDe
		FROM
		calendario WHERE id_usuario = ".$this->idUsuario." and datediff(fecha,now())>=0 and fecha < now()+interval ".$dentroDe." day";
		$res = mysql_query($sql);
		$eventos = array();
		while($evento = mysql_fetch_array($res,MYSQL_ASSOC))
		{
			$eventos[] = $evento;
		}
		return $eventos;
	}
	
	public function buscar($texto)
	{
		$sql="SELECT nota,fecha,'normal' as tipo FROM `calendario` WHERE id_usuario = ".$this->idUsuario." and  nota like '%".$texto."%'
		UNION
		SELECT concat_ws(' ','Cumpleaños de',u.nombre,u.apellido1) as nota, cumple as fecha,'cumple' as tipo
		FROM amigos a
		JOIN usuarios u on (a.id_amigo = u.id_usuario)
			WHERE a.id_usuario = ".$this->idUsuario."
			AND u.cumple <> '0000-00-00' AND (soundex(concat(nombre,apellido1,apellido2)) = soundex('".$texto."') or
			soundex(concat(nombre,apellido1)) = soundex('".$texto."') or
			soundex(concat(nombre)) = soundex('".$texto."') or
			soundex(concat(apellido1,apellido2)) = soundex('".$texto."') or
			soundex(concat(apellido1)) = soundex('".$texto."') or
			soundex(concat(apellido2)) = soundex('".$texto."') or
			soundex(concat(nombre,apellido2,apellido1)) = soundex('".$texto."'))
		";
		$res = mysql_query($sql);
		$encontradas = array();
		while($fila = mysql_fetch_array($res,MYSQL_ASSOC))
		{
					$encontradas[]=$fila;
		}
		return $encontradas;
	}
	
	public function borrar($id)
	{
		$sql ="DELETE FROM calendario
				WHERE id_tarea = ".$id." and id_usuario = ".$this->idUsuario;
		return mysql_query($sql);
	}
	
	public function cambiarNota($idNota,$nuevaNota)
	{
		$sql = "UPDATE calendario SET nota = '".$_GET['nota']."' WHERE id_tarea = ".$_GET['id_evento']." and id_usuario = ".$this->idUsuario;
		return mysql_query($sql);
	}
	
	public function moverTarea($idTarea,$dias,$minutos,$diaCompleto)
	{
		if($diaCompleto)
				$diaCompleto = 1;
			else
				$diaCompleto = "null";
				
			$sql ="UPDATE calendario SET fecha = fecha + interval ".$dias." day + interval ".$minutos." minute,
					fecha_fin = if(fecha_fin is null or ".$diaCompleto." is null,null,fecha_fin + interval ".$dias." day + interval ".$minutos." minute),
					dia_completo = ".$diaCompleto."
					WHERE id_tarea = ".$idTarea." and id_usuario = ".$this->idUsuario;
			return mysql_query($sql);
	}
	public function redimensionarTarea($idTarea,$dias,$minutos)
	{
		
			$sql ="UPDATE calendario SET fecha_fin = ifnull(fecha_fin,fecha) + interval ".$dias." day + interval ".$minutos." minute
					WHERE id_tarea = ".$idTarea." and id_usuario = ".$this->idUsuario;
		return mysql_query($sql);
	}
	public function getEventos($desde,$hasta)
	{
		$eventos = array();
		$sql = "SELECT * FROM calendario WHERE id_usuario = ".$this->idUsuario." and fecha >= '".$desde."' and fecha <='".$hasta."'";
		$res = mysql_query($sql);
		while($evento = mysql_fetch_array($res,MYSQL_ASSOC))
		{
			if($evento['dia_completo'] == 1)
				$evento['dia_completo'] = true;
				
			$evento['tipo'] = "normal";
			$eventos[] = $evento;
		}
		return $eventos;
	}
	
}	
?>
